/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package tv.inventario.web;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import tv.inventario.modelo.Producto;
import tv.inventario.modelo.TipoProducto;
import tv.inventario.rn.ProductoRN;
import tv.inventario.rn.TipoProductoRN;

/**
 *
 * @author Claudio
 */
@ManagedBean(name="buscadorProductoBean")
@SessionScoped
public class BuscadorProductoBean implements Serializable {

    @EJB private ProductoRN productoRN;
    @EJB private TipoProductoRN tipoProductoRN;

    private Producto producto;
    private List<Producto> listaProductos;
    private List<Producto> productosFiltrados;
    private List<TipoProducto> listaTipos;
    private TipoProducto tipoProducto;

    Map<String,String> filtro;

    private String contenido;

    /** Creates a new instance of BuscadorProductoBean */
    public BuscadorProductoBean() {

    }

    @PostConstruct
    public void init(){
        producto = new Producto();
        listaProductos = new ArrayList<Producto>(); //productoRN.getLista();
        listaTipos = tipoProductoRN.getLista();
        filtro = new HashMap<String,String>();
    }

    public void filtrarProductos(){

        filtro.clear();

        if(tipoProducto!=null){
            filtro.put("tippro = ", "'"+tipoProducto.getTippro()+"'");
        }

        if(contenido==null){
            contenido = "";
        }

        if(!contenido.isEmpty()){
            filtro.put("descrp LIKE ", "'%"+contenido.replaceAll(" ", "%" )+"%'");
        }        
        listaProductos = productoRN.getProductosByFiltro(filtro);
    }

    public void limpiarProducto(){
        producto = null;
    }

    public void seleccionarProducto(Producto p){
        producto = p;
//        System.out.println("Producto seleccionado: " + p.getDescrp());
    }

    public List<Producto> getListaProductos() {
        return listaProductos;
    }

    public void setListaProductos(List<Producto> listaProductos) {
        this.listaProductos = listaProductos;
    }

    public Producto getProducto() {
        return producto;
    }

    public void setProducto(Producto producto) {
        this.producto = producto;
    }

    public Map<String, String> getFiltro() {
        return filtro;
    }

    public void setFiltro(Map<String, String> filtro) {
        this.filtro = filtro;
    }

    public List<TipoProducto> getListaTipos() {
        return listaTipos;
    }

    public void setListaTipos(List<TipoProducto> listaTipos) {
        this.listaTipos = listaTipos;
    }

    public TipoProducto getTipoProducto() {
        return tipoProducto;
    }

    public void setTipoProducto(TipoProducto tipoProducto) {
        this.tipoProducto = tipoProducto;
    }
    
    public String getContenido() {
        return contenido;
    }

    public void setContenido(String contenido) {
        this.contenido = contenido;
    }

    public List<Producto> getProductosFiltrados() {
        return productosFiltrados;
    }

    public void setProductosFiltrados(List<Producto> productosFiltrados) {
        this.productosFiltrados = productosFiltrados;
    }

    public void reset() {
        producto = new Producto();
//        listaProductos = new ArrayList<Producto>(); //productoRN.getLista();
//        filtro = new HashMap<String,String>();
    }

}
